package LeetCode刷题;

import java.util.Scanner;

/**
 * @program: Java_Study
 * @author: Xiaofan
 * @createTime: 2021-09-06 19:54
 * @description: Functions of this class is
 * 在一个 平衡字符串 中，'L' 和 'R' 字符的数量是相同的。
 * <p>
 * 给你一个平衡字符串 s，请你将它分割成尽可能多的平衡字符串。
 * <p>
 * 注意：分割得到的每个字符串都必须是平衡字符串。
 * <p>
 * 返回可以通过分割得到的平衡字符串的 最大数量 。
 * <p>
 * 例如：
 * 输入：s = "RLRRLLRLRL"
 * 输出：4
 * 解释：s 可以分割为 "RL"、"RRLL"、"RL"、"RL" ，每个子字符串中都包含相同数量的 'L' 和 'R' 。
 *
 * 官方：
     * class Solution {
     *     public int balancedStringSplit(String s) {
     *         int ans = 0, d = 0;
     *         for (int i = 0; i < s.length(); ++i) {
     *             char ch = s.charAt(i);
     *             if (ch == 'L') {
     *                 ++d;
     *             } else {
     *                 --d;
     *             }
     *             if (d == 0) {
     *                 ++ans;
     *             }
     *         }
     *         return ans;
     *     }
     * }
 **/
public class No分割平衡字符串 {
    public static void main(String args[]) {
        Scanner scanner = new Scanner(System.in);
        String s = scanner.next();
        System.out.println(balancedStringSplit(s));
    }

    public static int balancedStringSplit(String s) {
        int ans = 0;//记录总的平衡字符串的个数
        int R_Num = 0;//记录每次计数时R字符串的个数
        int L_Num = 0;//记录每次计数时L字符串的个数
        boolean tag = false;//设置一个布尔类型变量用于记录
        for (int i = 0; i < s.length(); i++) {
            if (s.charAt(i) == 'R') {
                R_Num++;//如果是R的话，个数加一
                while (i + 1 < s.length() && s.charAt(i + 1) == 'L'&&L_Num!=R_Num) {//对后面的字符进行判断，如果为L的话
                    //指针往后走，同时L的个数+1
                    i++;
                    L_Num++;
                }
            } else {
                L_Num++;//如果是L的话，个数加一
                while (i + 1 < s.length() && s.charAt(i + 1) == 'R'&&L_Num!=R_Num) {//对后面的进行判断，如果为R的话
                    //往前走，同时L的个数+1
                    i++;
                    R_Num++;
                }
            }
            //当退出上面的循环的时候，如果发现L和R的个数相等了，就说明找到了一个平衡字符串
            if (L_Num == R_Num) {
                ans++;//平衡字符串个数加一
                R_Num = 0;
                L_Num = 0;
                //重置数据，开始判断下一个字符
            }
        }

        return ans;
    }
}